﻿using System;
using System.IO;
using QuanLyHopDong.Biz;
using QuanLyHopDong.Biz.Model;
using Resources;

namespace QuanLyHopDong.Web.HopDong
{
    public partial class KhoiLuongVatTuEdit : System.Web.UI.Page
    {
        #region Properties

        private HopDongBiz _hopDongBiz;
        private HopDongBiz HopDongManager
        {
            get { return _hopDongBiz ?? (_hopDongBiz = new HopDongBiz()); }
        }

        private HopDongView _hopDongView;
        private HopDongView CurrentHopDongView
        {
            get
            {
                if (_hopDongView == null && HopDongId > 0)
                {
                    _hopDongView = HopDongManager.GetById(HopDongId);
                }
                return _hopDongView;
            }
        }

        private KhoiLuongVatTuBiz _khoiLuongVatTuBiz;
        KhoiLuongVatTuBiz KhoiLuongVatTuManager
        {
            get
            {
                return _khoiLuongVatTuBiz ?? (_khoiLuongVatTuBiz = new KhoiLuongVatTuBiz());
            }
        }

        private int _khoiLuongVatTuId;
        private int KhoiLuongVatTuId
        {
            get
            {
                if (_khoiLuongVatTuId <= 0)
                    int.TryParse(Request.QueryString["id"], out _khoiLuongVatTuId);
                return _khoiLuongVatTuId;
            }
        }

        private KhoiLuongVatTuView _khoiLuongVatTuView;
        private KhoiLuongVatTuView CurrentKhoiLuongVatTuView
        {
            get
            {
                if (_khoiLuongVatTuView == null && KhoiLuongVatTuId > 0)
                {
                    _khoiLuongVatTuView = KhoiLuongVatTuManager.GetById(KhoiLuongVatTuId);
                }
                return _khoiLuongVatTuView;
            }
        }

        private int _hopDongId;
        private int HopDongId
        {
            get
            {
                if (_hopDongId <= 0)
                    int.TryParse(Request.QueryString["hopDongId"], out _hopDongId);
                return _hopDongId;
            }
        }

        //private int _khoiLuongId;
        //private int KhoiLuongId
        //{
        //    get
        //    {
        //        if (_khoiLuongId <= 0)
        //            int.TryParse(Request.QueryString["khoiLuongId"], out _khoiLuongId);
        //        return _khoiLuongId;
        //    }
        //}

        private KhoiLuongBiz _khoiLuongBiz;
        private KhoiLuongBiz KhoiLuongManager
        {
            get { return _khoiLuongBiz ?? (_khoiLuongBiz = new KhoiLuongBiz()); }
        }

        private PhieuXuatKhoBiz _phieuXuatKhoBiz;

        private PhieuXuatKhoBiz PhieuXuatKhoManager
        {
            get { return _phieuXuatKhoBiz ?? (_phieuXuatKhoBiz = new PhieuXuatKhoBiz()); }
        }

        #endregion

        #region Events

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //if (CurrentKhoiLuongVatTuView == null)
                //{
                //    lblErrorMessage.Text = string.Format("{0}: Id={1}", GlobalStrings.NotExisted, KhoiLuongVatTuId);
                //    btnSave.Visible = false;
                //    lnkDeleteFilePhieuXuat.Visible = false;
                //    lnkDeleteFileBienBanBanGiao.Visible = false;
                //    return;
                //}
                LoadHopDongData();
                LoadMaTuyen();
                LoadPhieuXuat();

                LoadKhoiLuongVatTuData();
            }
        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            lblErrorMessage.Text = string.Empty;

            #region collect inputs and validate

            var khoiLuongVatTu = new Biz.Model.KhoiLuongVatTu
            {
                Id = KhoiLuongVatTuId,
                VatTuId = CurrentKhoiLuongVatTuView.VatTuId,
                GhiChu = txtGhiChu.Text,
                KhoiLuongId = int.Parse(ddlMaTuyen.SelectedValue),
                PhieuXuatKhoId = int.Parse(ddlPhieuXuat.SelectedValue),
                HopDongId = CurrentKhoiLuongVatTuView.HopDongId
            };

            var vatTuName = txtVatTu.Text.Trim();
            if (string.IsNullOrEmpty(vatTuName))
            {
                lblErrorMessage.Text = "Chưa nhập vật tư";
                return;
            }
            khoiLuongVatTu.VatTuName = vatTuName;

            int soluong;
            if (txtSoLuong.Text.Trim().Length > 0 && int.TryParse(txtSoLuong.Text.Trim(), out soluong))
            {
                khoiLuongVatTu.SoLuong = soluong;
            }

            khoiLuongVatTu.DonViTinh = int.Parse(ddlDonViTinh.SelectedValue);
            khoiLuongVatTu.BenCap = byte.Parse(ddlBenCap.SelectedValue);

            int thicong;
            if (txtThiCong.Text.Trim().Length > 0 && int.TryParse(txtThiCong.Text.Trim(), out thicong))
            {
                khoiLuongVatTu.ThiCong = thicong;
            }

            int thucte;
            if (txtThucTe.Text.Trim().Length > 0 && int.TryParse(txtThucTe.Text.Trim(), out thucte))
            {
                khoiLuongVatTu.ThucTe = thucte;
            }

            //var filePhieuXuatName = string.Empty;
            //if (filePhieuXuatKho.HasFile)
            //{
            //    filePhieuXuatName = Path.GetFileName(filePhieuXuatKho.PostedFile.FileName);
            //    khoiLuongVatTu.PhieuXuatKho = filePhieuXuatName;
            //}
            //else
            //{
            //    khoiLuongVatTu.PhieuXuatKho = CurrentKhoiLuongVatTuView.PhieuXuatKho;
            //}

            //var fileBienBanName = string.Empty;
            //if (fileBienBanBanGiao.HasFile)
            //{
            //    fileBienBanName = Path.GetFileName(fileBienBanBanGiao.PostedFile.FileName);
            //    khoiLuongVatTu.BienBanBanGiao = fileBienBanName;
            //}
            //else
            //{
            //    khoiLuongVatTu.BienBanBanGiao = CurrentKhoiLuongVatTuView.BienBanBanGiao;
            //}

            #endregion

            // delete old file
            //if (filePhieuXuatKho.HasFile)
            //{
            //    if (!string.IsNullOrEmpty(CurrentKhoiLuongVatTuView.PhieuXuatKho))
            //    {
            //        var filePath =
            //            Server.MapPath(string.Format("~/Files/HopDong/{0}/{1}", HopDongId,
            //                CurrentKhoiLuongVatTuView.PhieuXuatKho));
            //        KhoiLuongVatTuManager.DeletePhieuXuatKho(filePath, CurrentKhoiLuongVatTuView.Id);
            //    }
            //}
            //if (fileBienBanBanGiao.HasFile)
            //{
            //    if (!string.IsNullOrEmpty(CurrentKhoiLuongVatTuView.BienBanBanGiao))
            //    {
            //        var filePath =
            //            Server.MapPath(string.Format("~/Files/HopDong/{0}/{1}", HopDongId,
            //                CurrentKhoiLuongVatTuView.BienBanBanGiao));
            //        KhoiLuongVatTuManager.DeleteBienBanBanGiao(filePath, CurrentKhoiLuongVatTuView.Id);
            //    }
            //}

            // update khoiluongvattu
            try
            {
                KhoiLuongVatTuManager.Update(khoiLuongVatTu);
            }
            catch (Exception ex)
            {
                lblErrorMessage.Text = ex.Message;
                return;
            }

            // upload files
            //if (filePhieuXuatKho.HasFile)
            //{
            //    // create folder
            //    var folderPath = Server.MapPath(string.Format("~/Files/HopDong/{0}", HopDongId));
            //    if (!Directory.Exists(folderPath))
            //        Directory.CreateDirectory(folderPath);

            //    // save new file
            //    var filePathFull = folderPath + "/" + filePhieuXuatName;
            //    if (File.Exists(filePathFull))
            //        File.Delete(filePathFull);
            //    filePhieuXuatKho.PostedFile.SaveAs(filePathFull);

            //    lnkFilePhieuXuat.Text = filePhieuXuatName;
            //    lnkFilePhieuXuat.NavigateUrl = string.Format("~/Files/HopDong/{0}/{1}", HopDongId, filePhieuXuatName);
            //    lnkDeleteFilePhieuXuat.Visible = true;
            //}
            //if (fileBienBanBanGiao.HasFile)
            //{
            //    // create folder
            //    var folderPath = Server.MapPath(string.Format("~/Files/HopDong/{0}", HopDongId));
            //    if (!Directory.Exists(folderPath))
            //        Directory.CreateDirectory(folderPath);

            //    // save new file
            //    var filePathFull = folderPath + "/" + fileBienBanName;
            //    if (File.Exists(filePathFull))
            //        File.Delete(filePathFull);
            //    fileBienBanBanGiao.PostedFile.SaveAs(filePathFull);

            //    lnkBienBanBanGiao.Text = fileBienBanName;
            //    lnkBienBanBanGiao.NavigateUrl = string.Format("~/Files/HopDong/{0}/{1}", HopDongId, fileBienBanName);
            //    lnkDeleteFileBienBanBanGiao.Visible = true;
            //}

            lblErrorMessage.Text = GlobalStrings.UpdateSuccess;
        }

        protected void lnkDeleteFilePhieuXuat_Click(object sender, EventArgs e)
        {
            //try
            //{
            //    var filePath =
            //        Server.MapPath(string.Format("~/Files/HopDong/{0}/{1}", HopDongId,
            //            CurrentKhoiLuongVatTuView.PhieuXuatKho));

            //    KhoiLuongVatTuManager.DeletePhieuXuatKho(filePath, CurrentKhoiLuongVatTuView.Id);
            //    lnkFilePhieuXuat.Text = string.Empty;
            //    lnkFilePhieuXuat.NavigateUrl = string.Empty;

            //    lblErrorMessage.Text = string.Empty;
            //    lnkDeleteFilePhieuXuat.Visible = false;
            //}
            //catch (Exception ex)
            //{
            //    lblErrorMessage.Text = ex.Message;
            //}
        }

        protected void lnkDeleteFileBienBanBanGiao_Click(object sender, EventArgs e)
        {
            //try
            //{
            //    var filePath =
            //        Server.MapPath(string.Format("~/Files/HopDong/{0}/{1}", HopDongId,
            //            CurrentKhoiLuongVatTuView.BienBanBanGiao));

            //    KhoiLuongVatTuManager.DeleteBienBanBanGiao(filePath, CurrentKhoiLuongVatTuView.Id);
            //    lnkBienBanBanGiao.Text = string.Empty;
            //    lnkBienBanBanGiao.NavigateUrl = string.Empty;

            //    lblErrorMessage.Text = string.Empty;
            //    lnkDeleteFileBienBanBanGiao.Visible = false;
            //}
            //catch (Exception ex)
            //{
            //    lblErrorMessage.Text = ex.Message;
            //}
        }

        #endregion

        #region Helpers

        private void LoadMaTuyen()
        {
            var khoiLuongs = KhoiLuongManager.GetKhoiLuongs(HopDongId);
            ddlMaTuyen.DataValueField = "Id";
            ddlMaTuyen.DataTextField = "MaTuyenExt";
            ddlMaTuyen.DataSource = khoiLuongs;
            ddlMaTuyen.DataBind();
        }

        private void LoadPhieuXuat()
        {
            var phieuXuats = PhieuXuatKhoManager.GetPhieuXuatKhos(HopDongId);
            ddlPhieuXuat.DataValueField = "Id";
            ddlPhieuXuat.DataTextField = "SoPhieu";
            ddlPhieuXuat.DataSource = phieuXuats;
            ddlPhieuXuat.DataBind();
        }

        private void LoadKhoiLuongVatTuData()
        {
            if (CurrentKhoiLuongVatTuView == null)
                return;

            txtVatTu.Text = CurrentKhoiLuongVatTuView.TenVatTu;
            txtSoLuong.Text = string.Format("{0}", CurrentKhoiLuongVatTuView.SoLuong);
            ddlDonViTinh.SelectedValue = string.Format("{0}", CurrentKhoiLuongVatTuView.DonViTinh);
            ddlBenCap.SelectedValue = string.Format("{0}", CurrentKhoiLuongVatTuView.BenCap);
            txtThiCong.Text = string.Format("{0}", CurrentKhoiLuongVatTuView.ThiCong);
            txtThucTe.Text = string.Format("{0}", CurrentKhoiLuongVatTuView.ThucTe);
            txtGhiChu.Text = CurrentKhoiLuongVatTuView.GhiChu;
            //if (!string.IsNullOrEmpty(CurrentKhoiLuongVatTuView.PhieuXuatKho))
            //{
            //    lnkFilePhieuXuat.Text = CurrentKhoiLuongVatTuView.PhieuXuatKho;
            //    lnkFilePhieuXuat.NavigateUrl = string.Format("~/Files/HopDong/{0}/{1}", HopDongId, CurrentKhoiLuongVatTuView.PhieuXuatKho);
            //    lnkDeleteFilePhieuXuat.Visible = true;
            //}
            //else
            //{
            //    lnkDeleteFilePhieuXuat.Visible = false;
            //}
            //if (!string.IsNullOrEmpty(CurrentKhoiLuongVatTuView.BienBanBanGiao))
            //{
            //    lnkBienBanBanGiao.Text = CurrentKhoiLuongVatTuView.BienBanBanGiao;
            //    lnkBienBanBanGiao.NavigateUrl = string.Format("~/Files/HopDong/{0}/{1}", HopDongId, CurrentKhoiLuongVatTuView.BienBanBanGiao);
            //    lnkDeleteFileBienBanBanGiao.Visible = true;
            //}
            //else
            //{
            //    lnkDeleteFileBienBanBanGiao.Visible = false;
            //}
        }

        public void LoadHopDongData()
        {
            ltrTenDonVi.Text = CurrentHopDongView.TenDonVi;
            ltrSoHopDong.Text = CurrentHopDongView.SoHopDong;
            ltrLoaiDuAn.Text = CurrentHopDongView.LoaiDuAn;
        }

        #endregion
    }
}